www.gusucode.com > VC++仿XP免费Prof UIS界面库-源码程序 > VC++仿XP免费Prof UIS界面库-源码程序/code/Samples/FunnyBars/ChildView.cpp

    //Download by http://www.NewXing.com
// ChildView.cpp : implementation of the CChildView class
//

#include "stdafx.h"
#include "FunnyBars.h"
#include "ChildView.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

static int CALLBACK stat_FontEnumProc(
	ENUMLOGFONTEX * lpelfe,
	NEWTEXTMETRICEX * lpntme, 
	int FontType,
	CComboBox * pCombo
	)
{
	lpntme;
	FontType;
    if(	pCombo->FindStringExact(
			0,
			lpelfe->elfLogFont.lfFaceName
			) != CB_ERR
		)
	    return 1;
	pCombo->AddString( lpelfe->elfLogFont.lfFaceName );
    return 1;
}

/////////////////////////////////////////////////////////////////////////////
// CChildView

IMPLEMENT_DYNCREATE( CChildView, CFormView );

CChildView::CChildView()
	: CFormView( CChildView::IDD )
	, m_bInitializingControls( false )
{
	
	::memset( &m_lf, 0, sizeof(LOGFONT) );
	ASSERT( g_PaintManager->m_FontNormal.GetSafeHandle() != NULL );
	g_PaintManager->m_FontNormal.GetLogFont( &m_lf );
}

CChildView::~CChildView()
{
}

void CChildView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(	CChildView)
	DDX_Control(pDX, IDC_SLIDER_HTBB, m_wndSliderHTBB);
	DDX_Control(pDX, IDC_EDIT_FONT_WIDTH, m_EditFontWidth);
	DDX_Control(pDX, IDC_EDIT_FONT_HEIGHT, m_EditFontHeight);
	DDX_Control(pDX, IDC_COMBO_FONT_FACE_NAME, m_ComboFontFaceName);
	DDX_Control(pDX, IDC_CHECK_FONT_UNDERLINE, m_BtnFontUnderline);
	DDX_Control(pDX, IDC_CHECK_FONT_STRIKEOUT, m_BtnFontStrikeout);
	DDX_Control(pDX, IDC_CHECK_FONT_ITALIC, m_BtnFontItalic);
	DDX_Control(pDX, IDC_CHECK_FONT_BOLD, m_BtnFontBold);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChildView,CFormView )
	//{{AFX_MSG_MAP(CChildView)
	ON_WM_HSCROLL()
	ON_WM_SETTINGCHANGE()
	ON_WM_SYSCOLORCHANGE()
	ON_BN_CLICKED(IDC_CHECK_FONT_BOLD, OnCheckFontBold)
	ON_BN_CLICKED(IDC_CHECK_FONT_ITALIC, OnCheckFontItalic)
	ON_BN_CLICKED(IDC_CHECK_FONT_UNDERLINE, OnCheckFontUnderline)
	ON_BN_CLICKED(IDC_CHECK_FONT_STRIKEOUT, OnCheckFontStrikeout)
	ON_EN_CHANGE(IDC_EDIT_FONT_WIDTH, OnChangeEditFontWidth)
	ON_EN_CHANGE(IDC_EDIT_FONT_HEIGHT, OnChangeEditFontHeight)
	ON_CBN_SELCHANGE(IDC_COMBO_FONT_FACE_NAME, OnSelchangeComboFontFaceName)
	ON_COMMAND(ID_VIEW_UI_STYLE_2K, OnViewUiStyle2k)
	ON_UPDATE_COMMAND_UI(ID_VIEW_UI_STYLE_2K, OnUpdateViewUiStyle2k)
	ON_COMMAND(ID_VIEW_UI_STYLE_XP, OnViewUiStyleXp)
	ON_UPDATE_COMMAND_UI(ID_VIEW_UI_STYLE_XP, OnUpdateViewUiStyleXp)
	ON_COMMAND(ID_VIEW_UI_STYLE_2003, OnViewUiStyle2003)
	ON_UPDATE_COMMAND_UI(ID_VIEW_UI_STYLE_2003, OnUpdateViewUiStyle2003)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CChildView message handlers


void CChildView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	if(		pScrollBar->GetSafeHwnd() != NULL
		&&	pScrollBar->GetDlgCtrlID() == IDC_SLIDER_HTBB
		)
	{
		if( !m_bInitializingControls )
		{
			int nPos = m_wndSliderHTBB.GetPos();
			ASSERT( -100 <= nPos && nPos <= 100 );
			double lfHotPercent = double(nPos) / 100.0;
			CMainFrame * pMainFrame =
				STATIC_DOWNCAST( CMainFrame, GetParentFrame() );
			int nCount = pMainFrame->m_wndToolBarTrueHot.GetButtonsCount();
			for( int i = 0; i < nCount; i++ )
			{
				CExtBarButton * pTBBxx =
					pMainFrame->m_wndToolBarTrueHot.GetButton( i );
				ASSERT_VALID( pTBBxx );
				CFunnyToolButton * pTBB =
					DYNAMIC_DOWNCAST( CFunnyToolButton, pTBBxx );
				if( pTBB == NULL )
					continue;
				ASSERT( !pTBB->IsSeparator() );
				pTBB->UpdateHotPercent( lfHotPercent );
			} // for( int i = 0; i < nCount; i++ )
			if( pMainFrame->m_wndToolBarTrueHot.IsVisible() )
			{
				pMainFrame->m_wndToolBarTrueHot.Invalidate();
				pMainFrame->m_wndToolBarTrueHot.UpdateWindow();
			}
		} // if( !m_bInitializingControls )
		return;
	}
	CFormView ::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CChildView::OnInitialUpdate() 
{
	CFormView ::OnInitialUpdate();

	ASSERT( !m_bInitializingControls );
	m_bInitializingControls = true;

	m_wndSliderHTBB.SetRange( -100, 100 );
	m_wndSliderHTBB.SetPageSize( 10 );
	m_wndSliderHTBB.SetPos( 25 );

CWindowDC dc( this );
LOGFONT logfont;
	logfont.lfCharSet = DEFAULT_CHARSET;
	logfont.lfFaceName[0] = '\0';
	logfont.lfPitchAndFamily = 0;
	::EnumFontFamiliesEx(
		dc.m_hDC,
		&logfont,
		(FONTENUMPROC)stat_FontEnumProc,
		(LPARAM)&m_ComboFontFaceName,
		0
		);
int i = m_ComboFontFaceName.FindStringExact(
		0,
		m_lf.lfFaceName
		);
	if( i >= 0 )
		m_ComboFontFaceName.SetCurSel( i );

CString s;
	s.Format( _T("%ld"), m_lf.lfWidth );
	m_EditFontWidth.SetWindowText( s );
	s.Format( _T("%ld"), m_lf.lfHeight );
	m_EditFontHeight.SetWindowText( s );

	m_BtnFontBold.SetCheck(
		( m_lf.lfWeight > 400 ) ? TRUE : FALSE
		);
	m_BtnFontItalic.SetCheck(
		m_lf.lfItalic ? TRUE : FALSE
		);
	m_BtnFontUnderline.SetCheck(
		m_lf.lfUnderline ? TRUE : FALSE
		);
	m_BtnFontStrikeout.SetCheck(
		m_lf.lfStrikeOut ? TRUE : FALSE
		);

	m_bInitializingControls = false;
}

void CChildView::_ConrolsData_2_UiSettings()
{
	ASSERT( !m_bInitializingControls );
	if( g_PaintManager->m_FontNormal.GetSafeHandle() != NULL )
		g_PaintManager->m_FontNormal.DeleteObject();

CString s;

	m_ComboFontFaceName.GetWindowText( s );
	if( !s.IsEmpty() )
		_tcscpy( m_lf.lfFaceName, s );

	m_EditFontWidth.GetWindowText( s );
	if( !s.IsEmpty() )
		m_lf.lfWidth = _ttol( s );
	m_EditFontHeight.GetWindowText( s );
	if( !s.IsEmpty() )
		m_lf.lfHeight = _ttol( s );

	m_lf.lfWeight = m_BtnFontBold.GetCheck() ? 900 : 400;
	m_lf.lfItalic = (BYTE)(m_BtnFontItalic.GetCheck() ? TRUE : FALSE);
	m_lf.lfUnderline = (BYTE)(m_BtnFontUnderline.GetCheck() ? TRUE : FALSE);
	m_lf.lfStrikeOut = (BYTE)(m_BtnFontStrikeout.GetCheck() ? TRUE : FALSE);

	g_PaintManager->m_FontNormal.CreateFontIndirect( &m_lf );
	ASSERT( g_PaintManager->m_FontNormal.GetSafeHandle() != NULL );
CMainFrame * pMainFrame =
		STATIC_DOWNCAST( CMainFrame, GetParentFrame() );
	pMainFrame->RecalcLayout();
	RedrawWindow(
		NULL,
		NULL,
		RDW_INVALIDATE|RDW_ERASE|RDW_ALLCHILDREN
		);
	CExtControlBar::stat_RedrawFloatingFrames( pMainFrame );
	CExtControlBar::stat_RecalcBarMetrics( pMainFrame );
}

void CChildView::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) 
{
	CFormView::OnSettingChange(uFlags, lpszSection);
	_ConrolsData_2_UiSettings();
}

void CChildView::OnSysColorChange() 
{
	CFormView::OnSysColorChange();
	_ConrolsData_2_UiSettings();
}

void CChildView::OnCheckFontBold() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnCheckFontItalic() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnCheckFontUnderline() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnCheckFontStrikeout() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnChangeEditFontWidth() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnChangeEditFontHeight() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}
void CChildView::OnSelchangeComboFontFaceName() 
{
	if( !m_bInitializingControls )
		_ConrolsData_2_UiSettings();
}

void CChildView::OnViewUiStyle2k() 
{
	if( !g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) ) )
		return;
	VERIFY(
		g_PaintManager.InstallPaintManager( new CExtPaintManager )
		);
	_ConrolsData_2_UiSettings();
}

void CChildView::OnUpdateViewUiStyle2k(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
	pCmdUI->SetRadio(
		g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) )
			? FALSE
			: TRUE
		);
}

void CChildView::OnViewUiStyleXp() 
{
	if(		g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) )
		&&	(!g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerOffice2003) ))
		)
		return;
	VERIFY(
		g_PaintManager.InstallPaintManager( new CExtPaintManagerXP )
		);
	_ConrolsData_2_UiSettings();
}

void CChildView::OnUpdateViewUiStyleXp(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
	pCmdUI->SetRadio(
		(		g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerXP) )
			&&	(!g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerOffice2003) ))
		) ? TRUE : FALSE
		);
}

void CChildView::OnViewUiStyle2003() 
{
	if( g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerOffice2003) ) )
		return;
	VERIFY(
		g_PaintManager.InstallPaintManager( new CExtPaintManagerOffice2003 )
		);
	_ConrolsData_2_UiSettings();
}

void CChildView::OnUpdateViewUiStyle2003(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable();
	pCmdUI->SetRadio(
		g_PaintManager->IsKindOf( RUNTIME_CLASS(CExtPaintManagerOffice2003) )
			? TRUE
			: FALSE
		);
}